home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / gdb.new / gdb-4.0 / bfd / libcoff.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-08-24  |  3.7 KB  |  160 lines

  1. /* BFD COFF object file private structure.
  2.    Copyright (C) 1990-1991 Free Software Foundation, Inc.
  3.    Written by Cygnus Support.
  4.  
  5. This file is part of BFD, the Binary File Descriptor library.
  6.  
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or
  10. (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. /* $Id: libcoff.h,v 1.15 1991/08/21 21:37:37 pesch Exp $ */
  22.  
  23. /* Object file tdata; access macros */
  24.  
  25. #define obj_icof(bfd)        ((struct icofdata *) ((bfd)->tdata))
  26. #define coff_data(bfd)        ((struct icofdata *) ((bfd)->tdata))
  27. #define exec_hdr(bfd)        (obj_icof(bfd)->hdr)
  28. #define obj_symbols(bfd)    (obj_icof(bfd)->symbols)
  29. #define    obj_sym_filepos(bfd)    (obj_icof(bfd)->sym_filepos)
  30.  
  31. #define obj_relocbase(bfd)    (obj_icof(bfd)->relocbase)
  32. #define obj_raw_syments(bfd)    (obj_icof(bfd)->raw_syments)
  33. #define obj_convert(bfd)    (obj_icof(bfd)->conversion_table)
  34. #if CFILE_STUFF
  35. #define obj_symbol_slew(bfd)    (obj_icof(bfd)->symbol_index_slew)
  36. #else
  37. #define obj_symbol_slew(bfd) 0
  38. #endif
  39. #define obj_string_table(bfd)    (obj_icof(bfd)->string_table)
  40.  
  41. #if 0
  42. typedef struct coff_ptr_struct
  43. {
  44.   unsigned int offset;
  45.   char fix_tag;
  46.   char fix_end;
  47.   union {
  48.     union internal_auxent auxent;
  49.     struct internal_syment syment;
  50.   } u;
  51. } combined_entry_type;
  52.  
  53.  
  54. typedef struct 
  55. {
  56.   asymbol symbol;
  57.   combined_entry_type *native;
  58.   struct lineno_cache_entry *lineno;
  59. } coff_symbol_type;
  60. #endif
  61.  
  62. typedef struct icofdata 
  63. {
  64.  
  65. struct   coff_symbol_struct *symbols;    /* symtab for input bfd */
  66.   unsigned int *conversion_table;
  67.   file_ptr sym_filepos;
  68.  
  69.   long symbol_index_slew;    /* used during read to mark whether a
  70.                    C_FILE symbol as been added. */
  71.  
  72. struct coff_ptr_struct *raw_syments;
  73.   struct lineno *raw_linenos;
  74.   unsigned int raw_syment_count;
  75.   char *string_table;
  76.   unsigned short flags;
  77.   /* These are only valid once writing has begun */
  78.   long int relocbase;
  79. } coff_data_type;
  80.  
  81. /* We take the address of the first element of a asymbol to ensure that the
  82.  * macro is only ever applied to an asymbol.  */
  83. #define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
  84.  
  85.  
  86.  
  87. /*THE FOLLOWING IS EXTRACTED FROM THE SOURCE*/
  88.  
  89. /*:coffcode.h*/
  90.  
  91. /*
  92. The hidden information for an asymbol is:
  93. */
  94.  
  95.  typedef struct coff_ptr_struct
  96.  {
  97.  
  98. /*
  99. Remembers the offset from the first symbol in the file for this
  100. symbol. Generated by @code{coff_renumber_symbols}.
  101. */
  102.  
  103.    unsigned int offset;
  104.  
  105. /*
  106. Should the tag field of this symbol be renumbered.
  107. Created by @code{coff_pointerize_aux}.
  108. */
  109.  
  110.    char fix_tag;
  111.  
  112. /*
  113. Should the endidx field of this symbol be renumbered.
  114. Created by @code{coff_pointerize_aux}.
  115. */
  116.  
  117.    char fix_end;
  118.  
  119. /*
  120. The container for the symbol structure as read and translated from the file.
  121. */
  122.  
  123.    union {
  124.      union internal_auxent auxent;
  125.      struct internal_syment syment;
  126.    } u;
  127.  } combined_entry_type;
  128.  
  129. /*
  130.  
  131. Each canonical asymbol really looks like this:
  132. */
  133.  
  134.  typedef struct coff_symbol_struct
  135.  {
  136.  
  137. /*
  138. The actual symbol which the rest of BFD works with
  139. */
  140.  
  141.    asymbol symbol;
  142.  
  143. /*
  144. A pointer to the hidden information for this symbol
  145. */
  146.  
  147.    combined_entry_type *native;
  148.  
  149. /*
  150. A pointer to the linenumber information for this symbol
  151. */
  152.  
  153.    struct lineno_cache_entry *lineno;
  154.  } coff_symbol_type;
  155.  
  156. /*
  157. */
  158.  
  159.  
  160.